import type { ICourse, ICourseCreateRequest, ICourseUpdateRequest, ICourseCategory } from '../course';

/**
 * 课程卡片组件属性
 */
export interface ICourseCardProps {
  /** 课程信息 */
  course: ICourse;
  /** 课程分类列表 */
  categories: ICourseCategory[];
  /** 编辑回调 */
  onEdit?: (id: string) => void;
  /** 删除回调 */
  onDelete?: (id: string) => void;
  /** 查看详情回调 */
  onViewDetail?: (id: string) => void;
  /** 自定义样式类名 */
  className?: string;
  /** 是否显示操作按钮 */
  showActions?: boolean;
  /** 是否可选择 */
  selectable?: boolean;
  /** 是否已选中 */
  selected?: boolean;
  /** 选择回调 */
  onSelect?: (id: string, selected: boolean) => void;
}

/**
 * 课程表单组件属性
 */
export interface ICourseFormProps {
  /** 课程信息（编辑时传入） */
  course?: ICourse;
  /** 课程分类列表 */
  categories: ICourseCategory[];
  /** 是否显示表单 */
  visible: boolean;
  /** 表单模式 */
  mode: 'create' | 'edit';
  /** 提交回调 */
  onSubmit: (data: ICourseCreateRequest | ICourseUpdateRequest) => Promise<void>;
  /** 取消回调 */
  onCancel: () => void;
  /** 是否加载中 */
  loading?: boolean;
}

/**
 * 课程列表组件属性
 */
export interface ICourseListProps {
  /** 课程列表 */
  courses: ICourse[];
  /** 课程分类列表 */
  categories: ICourseCategory[];
  /** 是否加载中 */
  loading?: boolean;
  /** 编辑回调 */
  onEdit?: (course: ICourse) => void;
  /** 删除回调 */
  onDelete?: (id: string) => void;
  /** 查看详情回调 */
  onViewDetail?: (id: string) => void;
  /** 选择课程回调 */
  onSelect?: (courseIds: string[]) => void;
  /** 已选中的课程ID列表 */
  selectedCourseIds?: string[];
  /** 是否显示选择框 */
  selectable?: boolean;
  /** 自定义样式类名 */
  className?: string;
  /** 空状态文本 */
  emptyText?: string;
}

/**
 * 课程搜索组件属性
 */
export interface ICourseSearchProps {
  /** 搜索关键词 */
  keyword?: string;
  /** 搜索回调 */
  onSearch: (keyword: string) => void;
  /** 筛选条件 */
  filters?: {
    /** 分类筛选 */
    categoryIds?: string[];
    /** 教师筛选 */
    teacher?: string;
    /** 状态筛选 */
    status?: number;
  };
  /** 筛选回调 */
  onFilterChange?: (filters: ICourseSearchProps['filters']) => void;
  /** 重置回调 */
  onReset?: () => void;
  /** 课程分类列表 */
  categories: ICourseCategory[];
  /** 自定义样式类名 */
  className?: string;
  /** 占位符文本 */
  placeholder?: string;
  /** 是否显示高级筛选 */
  showAdvancedFilter?: boolean;
}

/**
 * 课程选择器组件属性
 */
export interface ICourseSelectorProps {
  /** 课程列表 */
  courses: ICourse[];
  /** 已选中的课程ID列表 */
  selectedCourseIds: string[];
  /** 选择回调 */
  onChange: (courseIds: string[]) => void;
  /** 是否多选 */
  multiple?: boolean;
  /** 占位符文本 */
  placeholder?: string;
  /** 是否禁用 */
  disabled?: boolean;
  /** 自定义样式类名 */
  className?: string;
  /** 最大选择数量 */
  maxCount?: number;
  /** 是否按分类分组显示 */
  groupByCategory?: boolean;
  /** 课程分类列表 */
  categories?: ICourseCategory[];
}